package com.gf.fund.service;

import com.gf.common.bean.Page;

/**
 * 用户财产的处理
 * 
 * @author zhuguifeng
 * 
 */
public interface FundService {

	/**
	 * 用户注册的话初始化财产余额<br>
	 * 其他的值都为默认值
	 * 
	 * @param userId
	 * @return
	 */
	public long initFund(long userId);

	/**
	 * 用户充值<br>
	 * 返回充值后的金额
	 * 
	 * @param userId
	 * @param changes
	 *            >0
	 * @return
	 */
	public double charge(long userId, double changes);

	/**
	 * 用户消费<br>
	 * 返回消费后的金额<br>
	 * 金额不够:返回-1
	 * 
	 * @param userId
	 * @param changes
	 *            > 0
	 * @return
	 */
	public double consume(long userId, double changes, String event);

	/**
	 * 得到用户的总的金额
	 * 
	 * @param userId
	 * @return
	 */
	public double getTotal(long userId);

	/**
	 * 
	 * @param userId
	 * @param pageSize
	 * @param currentPage
	 * @return
	 */
	public Page getFundByUserId(long userId, int pageSize, int currentPage);

	/**
	 * 消费记录
	 * 
	 * @param userId
	 * @param pageSize
	 * @param currentPage
	 * @param startTime
	 * @param endTime
	 *            开始时间和结束时间同时为0，则对时间无要求
	 * @return
	 */
	public Page getConsumeFundByUserId(long userId, int pageSize,
			int currentPage, long startTime, long endTime);

	/**
	 * 充值记录
	 * 
	 * @param userId
	 * @param pageSize
	 * @param currentPage
	 * @param startTime
	 * @param endTime
	 *            开始时间和结束时间同时为0，则对时间无要求
	 * @return
	 */
	public Page getChargeFundByUserId(long userId, int pageSize,
			int currentPage, long startTime, long endTime);
}
